home *** CD-ROM | disk | FTP | other *** search
- 10 REM SUPERMON INSTR
- 20 REM FIXED TO RUN PROPERLY BY
- 30 REM RICHARD BRADLEY
- 40 REM TORONTO PET USERS GROUP
- 50 REM COMMODORE 64 LIBRARIAN
- 1100 PRINT"[147]"
- 1200 PRINT" SIMPLE ASSEMBLER "
- 1300 PRINT".A[146] 2000[146] LDA[146] #$12
- 1310 [153]".A 2002 STAWAIT $8000,X
- 1320 PRINT".A 2005 (RETURN)
- 1330 [153]".
- 1340 PRINT" IN THE ABOVE EXAMPLE THE USER
- 1350 [153]"STARTED ASSEMBLY AT 1000 HEX. THE
- 1360 PRINT"FIRST INSTRUCTION WAS LOAD A REGISTER
- 1370 [153]"WITH IMMEDIATE 12 HEX. IN THE SECOND
- 1380 PRINT"LINE THE USER DID NOT NEED TO TYPE THE
- 1390 [153]"A AND ADDRESS. THE SIMPLE ASSEMBLER
- 1400 PRINT"PROMPTS WITH THE NEXT ADDRESS. TO EXIT
- 1410 [153]"THE ASSEMBLER TYPE A RETURN AFTER THE
- 1420 PRINT"THE ADDRESS PROMPT. SYNTAX IS THE SAME
- 1430 [153]"AS THE DISASSEMBLER OUTPUT.
- 1450 GOSUB9000
- 1500 PRINT" DISASSEMBLER "
- 1510 PRINT".D[146] 2000[146]
- 1520 [153]"(SCREEN CLEARS)
- 1530 PRINT"., 2000 A9 12 LDA #$12
- 1540 [153]"., 2002 9D 00 80 STA $8000,X
- 1550 PRINT"., 2005 AA TAX
- 1560 [153]"., 2006 AA TAX
- 1570 PRINT"(FULL PAGE OF INSTRUCTIONS)
- 1600 [153]" DISASSEMBLES 22 INSTRUCTIONS
- 1610 PRINT"STARTING AT 1000 HEX. THE THREE BYTES
- 1620 [153]"FOLLOWING THE ADDRESS MAY BE MODIFIED.
- 1630 PRINT"USE THE CRSR KEYS TO MOVE TO AND MODIFY
- 1640 [153]"THE BYTES. HIT RETURN AND THE BYTES
- 1650 PRINT"IN MEMORY WILL BE CHANGED. SUPERMON[146]
- 1660 [153]"WILL THEN DISASSEMBLE THAT PAGE AGAIN.
- 1690 GOSUB9000
- 1700 PRINT" PRINTING DISASSEMBLER "
- 1710 PRINT".P[146] 2000,2040[146]
- 1720 [153]"2000 A9 12 LDA #$12
- 1730 PRINT"2002 9D 00 80 STA $8000,XY.
- 1740 [153]"2005 AA TAX
- 1750 PRINT" ...."
- 1760 PRINT"203F A2 00 LDX #$00
- 1770 [153]"TO ENGAGE PRINTER, SET UP BEFOREHAND:
- 1775 PRINT" OPEN 4,4:CMD4
- 1780 [153]"ON 4.0, ACCESS THE MONITOR VIA A CALL
- 1785 PRINT"SYS 54386 (*NOT* A BREAK) COMMAND
- 1790 [141] 9000
- 1800 [153]" SINGLE STEP "
- 1810 [153]".I
- 1820 PRINT" ALLOWS A MACHINE LANGUAGE PROGRAM
- 1830 [153]"TO BE RUN STEP BY STEP.
- 1840 PRINT"CALL REGISTER DISPLAY WITH .R[146] AND SET
- 1850 [153]"THE PC ADDRESS TO THE DESIRED FIRST
- 1860 PRINT"INSTRUCTION FOR SINGLE STEPPING.
- 1870 [153]"THE .IWAIT WILL CAUSE A SINGLE STEP TO
- 1880 PRINT"EXECUTE AND WILL DISASSEMBLE THE NEXT.
- 1890 [153]"CONTROLS:
- 1900 PRINT" <[146] FOR SINGLE STEP;
- 1910 [153]" RVSWAIT FOR SLOW STEP;
- 1920 PRINT" SPACE[146] FOR FAST STEPPING;
- 1930 [153]" STOPWAIT TO RETURN TO MONITOR."
- 1940 [153]"[ON BUSINESS KEYBOARDS--
- 1950 PRINT" USE 8[146],_[146],6[146] AND STOP[146]].
- 1990 [141]9000
- 2000 [153]" FILL MEMORY "
- 2010 [153]".FWAIT 1000WAIT 1100WAIT FF
- 2020 PRINT" FILLS THE MEMORY FROM 1000 HEX TO
- 2030 [153]"1100 HEX WITH THE BYTE FF HEX.
- 2090 GOSUB9000
- 2100 PRINT" GO RUN "
- 2110 PRINT".G
- 2120 [153]" GO TO THE ADDRESS IN THE PC
- 2130 PRINT"REGISTER DISPLAY AND BEGIN RUN CODE.
- 2140 [153]"ALL THE REGISTERS WILL BE REPLACED
- 2150 PRINT"WITH THE DISPLAYED VALUES."
- 2160 PRINT".G[146] 1000
- 2170 [153]" GO TO ADDRESS 1000 HEX AND BEGIN
- 2180 PRINT"RUNNING CODE.
- 2190 [141]9000
- 2200 [153]" HUNT MEMORY "
- 2210 [153]".HWAIT C000WAIT D000WAIT 'READ
- 2220 PRINT" HUNT THRU MEMORY FROM C000 HEX TO
- 2230 [153]"D000 HEX FOR THE ASCII STRING READWAIT AND
- 2240 PRINT"PRINT THE ADDRESS WHERE IT IS FOUND. A
- 2250 [153]"MAXIMUM OF 32 CHARACTERS MAY BE USED.
- 2260 PRINT".H[146] C000[146] D000[146] 20[146] D2[146] FF
- 2270 [153]" HUNT MEMORY FROM C000 HEX TO D000
- 2280 PRINT"HEX FOR THE SEQUENCE OF BYTES 20 D2 FF
- 2290 [153]"AND PRINT THE ADDRESS. A MAXIMUM OF 32
- 2300 PRINT"BYTES MAY BE USED.
- 2390 [141]9000
- 2400 [153]" LOAD "
- 2401 [153]".LWAIT
- 2402 PRINT" LOAD ANY PROGRAM FROM CASSETTE #1.
- 2403 [153]".LWAIT ";[199](34);"RAM TEST";[199](34)
- 2404 [153]" LOAD FROM CASSETTE #1 THE PROGRAM
- 2405 PRINT"NAMED RAM TEST[146].
- 2410 [153]".LWAIT ";[199](34);"RAM TEST";[199](34);",08WAIT
- 2420 PRINT" LOAD FROM DISK (DEVICE 8) THE PROGRAM
- 2430 [153]"NAMED RAM TESTWAIT.
- 2440 PRINT"THIS COMMAND LEAVES BASIC POINTERS
- 2450 [153]"UNCHANGED.
- 2490 GOSUB9000
- 2500 PRINT" MEMORY DISPLAY "
- 2510 PRINT".M[146] 0000[146] 0080
- 2520 [153]".: 0000 00 01 02 03 04 05 06 07
- 2530 PRINT".: 0008 08 09 0A 0B 0C 0D 0E 0F
- 2540 [153]" DISPLAY MEMORY FROM 0000 HEX TO
- 2550 PRINT"0080 HEX. THE BYTES FOLLOWING THE
- 2560 [153]"ADDRESS MAY BE MODIFIED BY EDITING AND
- 2570 PRINT"THEN TYPING A RETURN.
- 2590 [141]9000
- 2600 [153]" REGISTER DISPLAY "
- 2610 [153]".R
- 2620 PRINT" PC IRQ SR AC XR YR SP
- 2630 [153]".; 0000 E62E 01 02 03 04 05
- 2640 PRINT" DISPLAYS THE REGISTER VALUES SAVED
- 2650 [153]"WHEN SUPERMONWAIT WAS ENTERED. THE VALUES
- 2660 PRINT"MAY BE CHANGED WITH THE EDIT FOLLOWED
- 2670 [153]"BY A RETURN.
- 2671 PRINT" USE THIS INSTRUCTION TO SET UP THE
- 2672 [153]"PC VALUE BEFORE SINGLE STEPPING WITH"
- 2673 [153]".IWAIT
- 2690 GOSUB9000
- 2700 PRINT" SAVE"
- 2710 PRINT".S[146] ";CHR$(34);"PROGRAM NAME";CHR$(34);",01,0800,0C80"
- 2720 PRINT" SAVE TO CASSETTE #1 MEMORY FROM
- 2730 [153]"0800 HEX UP TO BUT NOT INCLUDING 0C80
- 2740 PRINT"HEX AND NAME IT PROGRAM NAME[146].
- 2750 [153]".SWAIT ";[199](34);"0:PROGRAM NAME";[199](34);",08,1200,1F50"
- 2760 [153]" SAVE TO DISK DRIVE #0 MEMORY FROM
- 2770 PRINT"1200 HEX UP TO BUT NOT INCLUDING 1F50
- 2780 [153]"HEX AND NAME IT PROGRAM NAMEWAIT.
- 2790 GOSUB9000
- 2800 PRINT" TRANSFER MEMORY "
- 2810 PRINT".T[146] 1000[146] 1100[146] 5000
- 2820 [153]" TRANSFER MEMORY IN THE RANGE 1000
- 2830 PRINT"HEX TO 1100 HEX AND START STORING IT AT
- 2840 [153]"ADDRESS 5000 HEX.
- 2890 GOSUB9000
- 3200 PRINT" EXIT TO BASIC "
- 3210 PRINT".X
- 3220 [153]" RETURN TO BASIC READY MODE.
- 3230 PRINT"THE STACK VALUE SAVED WHEN ENTERED WILL
- 3240 [153]"BE RESTORED. CARE SHOULD BE TAKEN THAT
- 3250 PRINT"THIS VALUE IS THE SAME AS WHEN THE
- 3260 [153]"MONITOR WAS ENTERED. A CLR IN
- 3270 PRINT"BASIC WILL FIX ANY STACK PROBLEMS.
- 3290 [141]9000
- 3500 [153]"ON SUMMARY "
- 3505 [153]"COMMODORE MONITOR INSTRUCTIONS:"
- 3510 [153]"GWAIT GO RUN
- 3520 PRINT"L[146] LOAD FROM TAPE OR DISK
- 3530 [153]"MWAIT MEMORY DISPLAY
- 3540 PRINT"R[146] REGISTER DISPLAY
- 3550 [153]"SWAIT SAVE TO TAPE OR DISK
- 3560 PRINT"X[146] EXIT TO BASIC
- 3595 [153]"SUPERMON ADDITIONAL INSTRUCTIONS:"
- 3600 [153]"AWAIT SIMPLE ASSEMBLER
- 3610 PRINT"D[146] DISASSEMBLER
- 3620 [153]"FWAIT FILL MEMORY
- 3630 PRINT"H[146] HUNT MEMORY
- 3640 [153]"IWAIT SINGLE INSTRUCTION
- 3650 PRINT"P[146] PRINTING DISASSEMBLER
- 3660 [153]"TWAIT TRANSFER MEMORY
- 4000 GOSUB9000
- 4010 PRINT"[145]SUPERMON[146] WILL LOAD ITSELF INTO THE
- 4020 [153]"TOP OF MEMORY .. WHEREVER THAT HAPPENS
- 4030 PRINT"TO BE ON YOUR MACHINE.
- 4040 [153]" YOU MAY THEN SAVE THE MACHINE CODE
- 4050 PRINT"FOR FASTER LOADING IN THE FUTURE.
- 4060 [153]"BE SURE TO NOTE THE SYS COMMAND WHICH
- 4070 PRINT"LINKS SUPERMON[146] TO THE COMMODORE
- 4080 [153]"MONITOR.
- 5000 END
- 9000 PRINT"PRESS ANY KEY TO CONTINUE.";
- 9005 GETA$:IFA$=""GOTO9005
- 9010 PRINT"[147]";
- 10040 RETURN
-